#pragma warning disable 108
using System;
using System.Runtime.InteropServices;
using System.Collections.Generic;
using Cephei;
using Cephei.Generic;
using Cephei.QL.Times;
using Cephei.QL.Indexes;
using Cephei.QL.Termstructures;
using Cephei.QL.Cashflows;
namespace Cephei.QL.Experimental.Coupons
{
     
    [Guid ("02E9B4EC-3693-439b-A3DC-1CD7DEB393CD"),ComVisible(true)]
	public interface ISubPeriodsCoupon : Cephei.QL.Cashflows.IFloatingRateCoupon
	{
		///////////////////////////////////////////////////////////////
        // Methods
        //
        
		 Double EndTime {get;}
        
		 Cephei.IVector<DateTime> ObservationDates {get;}
        
		 UInt64 Observations {get;}
        
		 Cephei.QL.Times.ISchedule ObservationsSchedule {get;}
        
		 Cephei.IVector<Double> ObservationTimes {get;}
        
		 Double RateSpread {get;}
        
		 Double StartTime {get;}
    }

    // <summary> 
	//  Factory
	// </summary>
   	[ComVisible(true)]
    public interface ISubPeriodsCoupon_Factory // : Collection_Factory<ISubPeriodsCoupon, ICell<ISubPeriodsCoupon>>
    {
        ///////////////////////////////////////////////////////////////
        // Factory methods
        //
        
	    ISubPeriodsCoupon Create (DateTime paymentDate, Double nominal, Cephei.QL.Indexes.IIborIndex index, DateTime startDate, DateTime endDate, UInt32 fixingDays, Cephei.QL.Times.IDayCounter dayCounter, Double gearing, Double couponSpread, Double rateSpread, DateTime refPeriodStart, DateTime refPeriodEnd, Cephei.QL.Cashflows.IFloatingRateCouponPricer QL_Pricer);
    }
}

